//
//  Student.h
//  OC4_属性&字符串
//
//  Created by dllo on 15/10/27.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Student : NSObject

//{
//    NSString *_name;
//    NSString *_sex;
//    NSInteger _age;
//    CGFloat _score;
//}


// 声明属性
// 作用可以替代getter 和setter 还有实例变量的声明;
// 原子:atomic   非原子:nonatomic , 非原子不保护,原子保护,默认原子类型,单线程都使用非原子
// 属性的完整版本
// 属性的特性就是去订制不同的setter, getter方法的实现
// 对于不需要关心内存释放问题的变量用assign, 如NSInteger,CGFloat
// 对于需要关心内存释放问题的变量用retain/copy, 如oc中的各种对象等
// NSString *类型的变量最好选择copy
         // 不需要管理计数的写assign        c语言写assign
         // 需要管理计数的写retain ( +1   -1)     oc写retain,   字符串(NSString *)最好写copy
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *sex;
@property (nonatomic, assign) NSInteger age;
@property (nonatomic, assign) CGFloat score;


//- (NSString *)name;
//
//- (void)setName:(NSString *)name;

//- (NSString *)sex;
//
//- (void)setSex:(NSString *)sex;
//
//- (NSInteger)age;
//
//- (void)setAge:(NSInteger)age;
//
//- (CGFloat)score;
//
//- (void)setScore:(CGFloat)score;

- (id)initWithName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age score:(CGFloat)score;

+ (id)studentWithName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age score:(CGFloat)score;

- (void)info;


@end
